#include <iostream>
using namespace std; 
#include <vector>

bool IS_VAILD(vector<int>& cord , int i , int j)
{
  for (int k = 0 ; k < i ; k++)
  {
    if (j == cord[k] || abs(cord[k] - j) == abs(i - k))
    {
      return false; 
    }
  }
  return true;
}

// 0 ~ n-1
int process(int i , vector<int>& cord , int n)
{
  if (i == n)
  {
    return 1;
  }

  int ans = 0;
  for (int j = 0; j < n; j++)
  {
    if (IS_VAILD(cord , i , j))
    {
      cord[i] = j;
      ans += process(i+1 , cord , n);
    }
  }

  return ans;
}




int main()
{
  int n = 0;
  cin >> n ;
  vector<int> v(n , 0);
  int ret = process(0 , v , n);
  cout << ret << endl;
  return 0;
}
